sklearn机器学习之分类决策树以及参数设置(红酒数据集)

您所在的位置:网站首页 roc de ramon葡萄酒 sklearn机器学习之分类决策树以及参数设置(红酒数据集)

sklearn机器学习之分类决策树以及参数设置(红酒数据集)

2023-10-25 00:38| 来源: 网络整理| 查看: 265

在学习完吴恩达老师的机器学习教程后,开始在B站学习菜菜的sklearn机器学习视频。

1.导入相应包以及红酒数据集 from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split 2.查看红酒数据集中的数据 wine = load_wine() #注意这里是采用jupyter notebook环境,如果直接编写脚本会不输出 wine wine.data.shape wine.target #如果wine是一张表,应该长这样: import pandas as pd pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1) wine.feature_names wine.target_names 3.分训练集以及测试集 #这里采用sklearn中自带的划分训练集和测试集的方法进行分割,设置测试集站总样本比例为0.3 Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data, wine.target, test_size=0.3) 4.建立模型 #建立决策树模型并进行打分 clf = tree.DecisionTreeClassifier(criterion='entropy') clf = clf.fit(Xtrain, Ytrain) score = clf.score(Xtest, Ytest) score 5.利用graphviz库画出决策树 #设置特征名 feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸'] import graphviz dot_data = tree.export_graphviz(clf ,feature_names= feature_name #类别名 ,class_names=["琴酒","雪莉","贝尔摩德"] ,filled=True#决策树颜色 ,rounded=True#决策树圆框 ,out_file=None ) graph = graphviz.Source(dot_data) #这里小编一直报编码错误,无法解决,如有小伙伴知道怎么解决还望告知,谢谢 graph 6.探索决策树 #输出特征的重要程度 clf.feature_importances_ #将特征和特征重要程度组合在一起 [*zip(feature_name, clf.feature_importances_)] 7.参数设置调整 clf = tree.DecisionTreeClassifier(criterion="entropy" #random_state用来设置分枝中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。 ,random_state=30 #splitter也是用来控制决策树中的随机选项的,有两种输入值,输入”best",决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝(重要性可以通过属性feature_importances_查看),输入“random",决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。 ,splitter="random" #max_depth限制树的最大深度,超过设定深度的树枝全部剪掉 ,max_depth=4 #min_samples_leaf限定,一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生 ,min_samples_leaf=10 #min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生 ,min_samples_split=10 #max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。 #min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生。以上两个参数由于用到不多并未设置 ) clf = clf.fit(Xtrain, Ytrain) score = clf.score(Xtest, Ytest) score 8.调参优化

这里采用穷举法确定最佳参数并用matplotlib可视化

import matplotlib.pyplot as plt test = [] for i in range(10): clf = tree.DecisionTreeClassifier(max_depth=i+1 ,criterion="entropy" ,random_state=30 ,splitter="random" ) clf = clf.fit(Xtrain, Ytrain) score = clf.score(Xtest, Ytest) test.append(score) plt.plot(range(1,11),test,color="red",label="max_depth") plt.legend() plt.show() 总结

本次基于红酒数据集的决策树构建过程就到这里,欢迎小伙伴和我一起交流!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3